package com.concurrent.singleton;

import com.concurrent.annotations.NotRecommend;
import com.concurrent.annotations.ThreadSafe;

/**
 * @author: zhouyang
 * @descrpition: 单例模式 懒汉模式 第一次运行的时候初始化
 * @time: 2019-05-05 13:19
 */
@ThreadSafe
@NotRecommend
public class SingletonExample2 {
    //私有构造函数 外面就不能new了
    private SingletonExample2(){

    }

    //单例对象
    private static SingletonExample2 instance = null;

    //静态工厂方法
    public static synchronized SingletonExample2 getInstance(){//加上synchronized就可以解决 并发问题 但是带来性能上面的开销
        //在多个线程中会出错 如果运行多次可能会对资源造成误操作
        if (instance == null){
            instance = new SingletonExample2();
        }
        return instance;
    }
}
